import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import store from '@/store/index.js'
import {
	MessageBox,
	Message
} from 'element-ui';
import {
	con
} from '../config/index.js';

/*
* 你可以按照以下方式使用:
* Vue.axios.get(api).then((response) => {
*   console.log(response.data)
* })

* this.axios.get(api).then((response) => {
*   console.log(response.data)
* })

* this.$http.get(api).then((response) => {
*   console.log(response.data)
* })
*/

console.log('con', con);
/* 基本配置 */
const axiosService = axios.create({
	baseURL: "https://pm.ab0769.com/api/",
	timeout: con.timeout,
	withCredentials: con.withCredentials
})

// 请求拦截器
axiosService.interceptors.request.use(config => {
	//console.log('config', config);

	const method = config.method.toLocaleLowerCase();
	const token = window.sessionStorage.getItem("token");

	// get加个时间戳
	if (method === 'get') {
		config.params = {
			...config.params,
			t: new Date().getTime()
		}
	}
	if (store.state.token) {
		config.headers.authorization = 'Bearer ' + store.state.token;
		
	}
	
	config.headers.token=token;
	return config;
}, error => {
	return Promise.error(error);
});

axiosService.interceptors.response.use(response => {
	// 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
	// 否则的话抛出错误
	//console.log(response.data,222222222)
	if (response.status === 200) {
		if (response.data.code === 410000) {
			Message({
				type: 'error',
				message: '登陆超时'
			})
			setTimeout(() => {
				window.location.href = '/#/login'
			}, 1500)
		} else {
			return Promise.resolve(response.data);
		}
	} else {
		return Promise.reject(response.data);
	}
}, error => {
	if (error.response && error.response.status) {
		switch (error.response.status) {
			// 401: 未登录
			// 未登录则跳转登录页面，并携带当前页面的路径
			// 在登录成功后返回当前页面，这一步需要在登录页操作。
			case 401:
				Message({
					type: 'error',
					message: '未登录'
				})
				setTimeout(() => {
					window.location.href = '/#/login'
				}, 1500)
				break;

				// 403 token过期
				// 跳转登录页面
			case 403:
				console.log(error.response.status);
				// 清除token
				break;

				// 404请求不存在
			case 404:
				console.log(error.response.status);
				break;
				// 其他错误，直接抛出错误提示
			default:
				console.log(error.response.status);
		}
		return Promise.reject(error.response);
	}
});

Vue.use(VueAxios, axiosService);
